(๑˃ᴗ˂)ﻭ
嗨,我是wec,今天是DAY 7。
每次可以爬1或2階台階,找出有多少種方法可以到達第n階台階。
第1步: 用兩個變量a和b來記錄到達前兩級樓梯的爬法數a代表到n-2級的爬法數,b代表到達第n-1級的爬法數。
第2步: 然後從第3階開始,不斷更新a和b的值,直到計算到第n級。
第3步: 最後return的b就是到達第n階樓梯的總爬法數。
程式碼:
def climb_stairs(n)
return n if n <= 2
a, b = 1, 2
(3..n).each { a, b = b, a + b }
b
end
迭代法: 時間複雜度為O(n)
➡️ 因為使用固定數量的變量(a和b),所以迭代法的空間複雜度為O(1),可以很好的去節省內存。比起遞迴法,迭代法不會有重複計算的問題,所以在簡單的題目上會比較有效率,不過當題目較為複雜時,遞迴法也會成為解題的選擇ㄛ(っ˘ω˘ς )。
以上就是今天的內容!明天開始要刷15天的medium題了ㄛ(拿出小痛苦面具)
相信IT人動腦時都要吃點東西,所以今天邊寫邊吃醬油仙貝。
明天要說:Ruby精選刷題!Medium路跑D-1(>∀・)⌒☆